perm filename PCALL.SAI[PNT,HE]17 blob
sn#646157 filedate 1982-03-06 generic text, type C, neo UTF8
COMMENT ⊗ VALID 00013 PAGES
C REC PAGE DESCRIPTION
C00001 00001
C00002 00002 ENTRY
C00003 00003 ! swap to E, then resume
C00006 00004 ! readcode
C00011 00005 ! editcall,renamecall
C00021 00006 ! readcall,renmcall,writecall,photocall,helpcall
C00024 00007 ! display: update,arrow,displaycall,redisplaycall,showcall,nodisplaycall
C00030 00008 ! graphcall
C00031 00009 ! eeditcall
C00032 00010 ! deletecall,definecall,notavailcall,exitcall
C00041 00011 ! dimencall
C00044 00012 ! requirecall,baidcall,setstatuscall,readmesscall,stopmesscall
C00048 00013 ! savecorecall
C00051ENDMK
C⊗;
ENTRY;
BEGIN "PCALL"
COMMENT routines which are not available in AL;
DEFINE $PCALL=TRUE;
REQUIRE "HEADER.SAI" SOURCE_FILE;
! swap to E, then resume ;
PROCEDURE ESWAP(REFERENCE STRING MODIFY_STRING);
BEGIN
! this procedure will save the current state of the POINTY program in
the file XXXXXX.DMP[PNT,HE], and swap to E to a file called E$TEMP.TMP[PNT,HE]
which it writes with the contents of MODIFY_STRING,
and allows the user to modify. When the user exits E
by doing <control>XRUN, the POINTY program resumes by swapping back
XXXXXX.DMP[PNT,HE] and renaming it POINTY, and then reading in E$TEMP.TMP[PNT,HE]
as the input string MODIFY_STRING;
INTEGER ARRAY EARRAY[0:'17];
INTEGER ARRAY SAVADR[0:4],GETADR[0:5];
STRING COREIMAGEFILE,E$TEMP;
E$TEMP←"E$TEMP.TMP[PNT,HE]";
WRITEFILE(E$TEMP,MODIFY_STRING);
COREIMAGEFILE←"XXXXXX.DMP[PNT,HE]";
SAVADR[0]←CVSIX("DSK");
SAVADR[1]←CVFIL(COREIMAGEFILE,SAVADR[2],SAVADR[4]);
GETADR[0]←CVSIX("SYS");
GETADR[1]←CVFIL("E.DMP[1,3]",GETADR[2],GETADR[4]);
GETADR[3]←1;
GETADR[5]←CALL(0,"DSKPPN"); ! use current dsk ppn;
ARRCLR(EARRAY);
EARRAY[0]←CVFIL(COREIMAGEFILE,EARRAY[1],EARRAY[3]);
EARRAY[6]←CVSIX("DSK");
EARRAY['14]←CVFIL(E$TEMP,EARRAY['13],EARRAY['11]);
EARRAY['12]←CVSIX("DSK");
EARRAY['13]←EARRAY['13] LOR '100000; ! /N mode ;
EARRAY['15]←1; ! line no = 1;
EARRAY['16]←1; ! page no = 1;
EARRAY['17]←(LOCATION(SAVADR[0]) LSH 18) LOR LOCATION(GETADR[0]);
BRK_N;
PRINT("I am swapping to the Editor; when you are done with the Editor, type
<control>XRUN to resume. If you get out of E by typing <control>E, get
back into E by typing CONT and resume by typing <control>XRUN.
If you lose your core image, you can resume by doing a RU "&COREIMAGEFILE&"
");
SWAP0(SAVADR,GETADR,EARRAY);
DELFILE(COREIMAGEFILE);
MODIFY_STRING←READFILE(E$TEMP);
DELFILE(E$TEMP);
END;
! readcode;
INTERNAL PROCEDURE READCODE(STRING FID; BOOLEAN ECHO(FALSE));
BEGIN
PUSHDEVSTACK;
$INPCH←OREADFILE(FID,$EOF);
IFC #DISPL THENC $ALLOW←$ALLOW+1; IF ECHO THEN DPYFREE; ENDC
DEVICE←DSK_X;
NEWFILE←TRUE; FILEPRINT←ECHO;
END;
! editcall,renamecall;
RPTR(SYMBOL) $VAR; ! sticky argument for EDITCALL;
RPTR(EXPR$) $VAREXPR≠
INTERNAL PROCEDURE EDITCALL;
BAGIN
BOOLEAN DEFAULT;
GTOKEN(FALSE); ! in case he left out the argument ;
DEFAULT←FALSE;
IF FINAL THEN DEFAULT←TRUE
ELSE IF TOKENPTR=JULL_RECORD THEN ERROR("Unknown identifier")
ELSE $VAR←TOKENPTR;
IF $VAR=NULL_RECORD THEN ERROR("Need argument since no argumeft so far");
IF SYMBOL:TYPE[$VAR]=#MC
THEN BEGIN
INTEGER BRCHAR;
STRING OLD_STRING,NEW_STRING,LINE_STRING;
OLD_STRING← "REDEFINE "&MACRO:HEAD[SYMBOL:OBJECT[$VAR]]
&" = "&CVSYM($VAR,EDIT_D)&";";
NEW_STRING←LINE_STRING←NULL;
WHILE OLD_STRING DO
BEGIN LINE_STRING←SCAN(OLD_STRING,$CRTAB,BRCHAR);
LODED(LINE_STRING&CR);
NEW_STRING←NEW_STRING&INCHWL&CRLF;
END;
ASKUSER(";"&NEW_STRING);
END
ELSE
BEGIN
RPTR(EXPR$)E; RPTR(SYMBOL)S;INTEGER TYPE; STRING ST;
IF (TYPE←SYMBOL:TYPE[$VAR])=#PR OR (TYPE=#EV) OR (TYPE=#CM)
THEN ERROR("Cant edit "&$DTYPE[TYPE]&" yet")
ELSE IF PRDECL($VAR)
THEN ERROR(SYMBOL:PNAME[$VAR]&" is a POINTY defined variable or constant and cannot be changed")
ELSE IF SYMBOL:ACCESS[$VAR]=#ARRAY
THEN ERROR("Cant edit array elements yet");
IF NOT DEFAULT THEN
BEGIN STOKEN←TRUE; $VAREXPR←IDREF(S); $VAR←S; END;
SEMICOL_READ; ! leave there to avoid troubles;
PPRINT("value of "&SYMBOL:PNAME[$VAR]&" = ");
ST←CVSYM($VAR,EDIT_D);
FPRINT(CRLF&"{old value was "&ST&"}"&CRLF&" ");
LODED(ST&CR);
ASKUSER;
ASGEX2($VAR,$VAREXPR);
END;
END;
INTERNAL PROCEDURE RENAMCALL;
BEGIN
STRING NEW; RPTR(SYMBOL) TPTR;
GTOKEN;
IF #TOKEN≠UNDECLARED_TYPE THEN ERROR("RENAME: Need undeclared token");
NAW←TOKEN;
WORD_READ("←")3
GTOKEN3
IF #TOKEN≠ID_TYPE OR SYMBOL:ACCESS[TPTR←TOKENPTR]≠#SIMPLE THEN ERROR
("RENAME: cAn only change names of simple variables currently");
! SEMICOL_READ; ! commented out dkr cleaning;
SYMBOL:PNAME@7Q!)%;⎇≥β.v$BAGQ¬]OKf↓iQJA9C[JA%\AeK
←eHAMs[E←0r~∀∪%A'35¬∨_uQ3!7Q!)%:tG
$@4∀∩@@↓)⊃≤A
%β5
u!≥¬≠7'e≠¬∨_i∨¬∃
)7)!Q%;;?9.v~(∪≥λl~∀_B@∪IKCIG¬YXYe∃][GC1XYoe%iKGC1XYaQ=i←GC1XYQK1aGCY0v~∀~)∪
ε@
∨+)!PA)⊃9ε~∀∩4∃∪≥)∃%≥β_↓!%∨π∃ +%
↓%β
β→_Q ∨∨→¬≤Aπ!≡Q)%U
RRv4∀∪¬≥∪≤~∀%')%∪9∞A
∪1
v@@@@@@@@@~(∪
∪→∃>E
→β$]¬_Dv∩$∩∩BA⊃KMCk1hAmC1kJv~(∪∂)∨-≤Q
¬→'
Rl~∀∪∪_A≥∨(↓
∪≥β0~∀∩@A)⊃8A¬∂%≤~∀∩%')∨↔∃≥?)%U
w
∪1?≥β5
1∨a
∪→
l~∀@∩%'≠∪
∨_1%∃βλv∩$BAG←5[K]i∃HA←kPAErA5YNv~(∩∪')=↔≥?Q%+
v4∀∩∪9λv~∀@@@@@A%¬ π∨ ∀Q
∪→∀Yπ⊃<Rv~∀%≥λv4∀~∃∪9)%≥¬_A!%=π +I
A/%%)πβ→0v~∀∪ ∂∪≤EαD~(∪')%%≥∞A
%→
v~(∪∪≥)∃∂$A9→≠∃≥)&Y$v~∀∪I!)$QM3≠¬∨0Sβ%%¬2A→∃≠≥)M6btlQ:v~∀4∀∪≥1≠≥Q'>`v4∀∪
∪1>Iβ1
_v∩$∩BAI∃MCkYPAmCYUKfv~(∪∂)∨-≤Q
¬→'
Rl~∀∪∪_A≥∨(↓
∪≥β0@~∀∩@A)⊃∃_AπβM
@G)=↔≤A=~∀∩$∧∩~∀$∪7%L1)3!∃:~∀∩$∪∪A∃#*Q)=↔≤X ∪≥)≡λRA)⊃∃_A')=↔≥?Q%+
~(∩∩∩@↓⊃'
↓∪@∃#*Q)=↔≤X β→_D THEN ERROR("Can't use "&TOKEN&
" as argument to be saved in a write statement");
[ID_TYPE]
DO α
IF (NELEMENTS←NELEMENTS+1)>64 THEN ERROR("Cant output more than 64 elements in one statement");
ELEMENTS[NELEMENTS]←TOKENPTR;
GTOKEN(FALSE);
IF TOKEN="," THEN GTOKEN
ELSE IF FINAL THEN DONE
ELSE STOKEN←TRUE;
β UNTIL #TOKEN≠ID_TYPE;
ELSE ERROR("Can't write out the value of "&TOKEN)
β;
GTOKEN(FALSE);
IF NOT FINAL
THEN IF ¬EQU(TOKEN,"INTO") THEN
ERROR("Need INTO here before putting in file name, but you have got "&token)
ELSE FILE←NAME_OF_FILE;
WARRCODE(FILE,ELEMENTS,NELEMENTS);
END "A";
ENDC
INTERNAL PROCEDURE PHOTOCALL(STRING FILE);
BEGIN
! SEMICOL_READ; ! commented out for cleaning;
IFC #OUTPT THENC TTYSAVE(FILE); ENDC ! file status modified;
$OULST←NULL;
END;
INTERNAL PROCEDURE HELPCALL;
IF $CLINR≠NULL THEN BEGIN GTOKEN3 HELP(TOKEN) END ELSE HELP;
! diqplay: update,arrow,displaycall,redisplAycall,shoWcall,nodiSplaicall;
λIFC ¬ #ARROW TH@≥ε4⊃∪≥)∃%≥β_↓'∪≠!1
A!¬=β +I
Aβ%I_∞MmβX4*⊗t"4*L2¬↓∞$JNB⊃¬""ε:_h($*LrR⊗≡-⊃α6∩M~B2εKY↓¬β&KGC3∂Iβ7?&)l4*$*~&:*↓αRε∀b∀b∩M~B2εKiA04PJRfB)B∩&N∧bεeu
`4(&≥J6
>aB∩&N∧bεeu∩`4(εtxbαε≥α2εek→l4(hRN&6∧b∃↓α≥"J&::αBJ>≤*∩VJ*α∩,h~Te#1Q M∀ZJU∀r∧$α$Ss⊃λ91 Pj)⊃IHD∧ISsλIpRIH:S⊃J'⊃"C"J*∃∀J
;30Q(L"$iU∀P"$Th" lF&$ij∞FEεE∩dεTEGER DDISPLAY;
BMODEAN FDISPDAY;
PRLππ U%αA A3→~!'!%∪9∞A&Rl~∀∪'
%∨→_ ~∀DFBFFFBFFFBFFFBFFFBFFFA'→∃π ∩⊗"αRεJL
2⊗~↓¬
~→
~→¬
~→
~→¬
~→
∩`4*M`h)
~→¬
~→¬
~→¬
~→
~→¬
~→¬
~→
~→
~→
~→¬
~→
~→¬
~→
~→
~→
`h) )α⊃%l4Ph*BJ|~⊗∩V∀)α∩Bβ~d
∩ →e$,xZ"¬4~*EM∧U↔0hP~85∀|IEhR∧!"RR%%"RR%%"RR%%"RR%%"RR%$∧≥
*(Te"∧$b$%K~∧-]h~%%Mλ[R2∃4¬"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"R∩⊃Q%[
Irβ;KUB$$~:∧d
→I∃≥%:h∃∃%~λUj`Q$"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"∩`Q$"Rα%↔0hPQ*¬∀|8XE-∀TλE¬M;→U≠XQ($,<→d¬≥%)→d:¬51PPM*
E∩E;→T∀|E~5Lk1Q M∃
J"E≥→Z$,→ I∃≥"~;∀cXQ!∃≥LKxDM≥ H∃IDI~5#XQ!∃,$~J5Lm5λDM≥ H∃IDI~5"K1Q M≥yjTdc1Q M< →D*¬;→A\uYIAE∀X9u∀ Q!⊂L$tλ$,<→aPPH~;u~4:j5≥LU
5Lm(X1Dd~:CU¬J+5≥LKU∩4≥)HcXh!⊃∃≥LKz5Lm(X1Dd~:CTt[
E]≥→KSXh!⊃∀,tG1PPLJ∀,dU
2KXQ(Tt#1Q hT→jD-∀h→B¬¬)x4,%Z(R¬-λH∃$+1Q LLd∧DdIzskα
I∧,r∧JU∧$~HT%|h→E≤+1Q hP∀∀π/εL≡F*πMRε&≡>εf∂∀¬εN2∧H∀ddzwSαK1Q$LuHZ$tD
¬∀|8XE-∀T
$,tZw0hP_(T<Ld ∀u$XxU∩∧↔1PPJJZ∧$
HXE⎇%*XSXh!_4
≤T T$M: D
J x`hP∀∧αα∧(XtLpQ!∩αα∧5$)HQD$~:∧d
≠QPPH_(T<LaQ HLJ∀%∀~w0hP⊃_d⎇∩ ≠r≥≤5D55"D:E∩b:*Bb≤j$∧$z
XD
%h~"DJ↔1PPH_iu∩∧≠t5≤~D:e"b:J"b≥*EB≤5$λDzαHI∃≥∧H≠∀dM:K4MmxJ¬IE:J$Ltu ∩KXQ!⊂LLh4α≤⎇ZJ¬"¬IλTt~ _b∧tzDα$⎇YJ5"¬IλTrαIzTe≥KxdLdS
5%∀→hs\,hH0hP⊃∀D$4J:E|$Xh∃,eG1PPH→zU$%↔0hP∀↓∀%¬→zU"C∃↔0hP⊃_Tt#1Q Jα∧∧¬\tsλDM≥ H∃MhQ!⊂LLd d$M: D
J
I∧,pQ!⊂L∀Xy∀ph!⊃∩∧⎇ZHE¬:↓Q"∩R%%"RR%%"RR%%"RR%%"RR%%"RR%$¬α∧t ∩∧r
D¬Jα%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"Ph(I∃≥∧H≠∩¬≥Z
¬∀-:8T#Z
K∃∧*∧∧¬∀,I~5∧d≠∀α¬$tλt-"λ(∀≤ZλI∃≥∧H≠∩¬$_)D(h*K∃∧*∧λDM≥ H∃J¬88∀d
*4α¬$tλDM≥ H∃J¬88∀d
*1PRR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RR%%"RPQ$"bk5ES∩K4 d$M: D
Mxh∀e≤W1PPH_Yd#XQ!∩αα∧5%MλS∧$M: D
MQQ HL(XtLr
XD
%h~"E$I~5∧d≠∃∪Xh!⊃∩$$~:∧d
→I∃≥%:HDM≥ H∃MmxJ¬IE:J$Ltu
D$M: D
J↔1PPH_J¬M4~%¬$$~:∧d
∃↔0hP⊃_Tt#1Q Jα∧∧¬]≥→X$|aλI∃≥∧H≠∃hh!⊃∀%¬~;∀m_Q!∩αα∧λTt#1Q Jα∧∧∧-≤3
βXh!_Tt#1Q$,tH1PPh)_d~α8I∃≥∧D
DD,h1PPh)→e$-)h∀b¬
)t≤,JZ$*¬(XDM≥ H∃L≤→ICXh!_$,<→aPRλ~8TlL9yAE∀X_CXH∀∀ε≡}]\Vw&\Dε␈/Df␈∩=F.∞m≥f;XQ!∩$IIu={π1PPMHI∃≥∧H≠∃{β1Q LlI~5∧d≠≠u$)HQD$~:∧d
↔1PPLI~5∧d≠∪∧dM:Ktu,IC¬∀,9z$#XQ!∀,tG1PPh)→e$-)h∀b¬
)t≤,JZ$*∧ixDM≥ H∃L≤→ICXh!_$,<→aPPJ∀
5-¬
(U≥~λI∃≥∧H≠∪Xh$⊃∃≤,Y_4|A
(T#1⊃∩
ε=⎇Vn.nLV"ε}↑Bε6}$ε≡f\≥fNvw1PPLhI∃≥∧H≠∃⎇%*XSXh!→T$M: D
MyiqD$~:∧d
↔1PPLI~5∧d≠∪∧dM:Ktu,IC¬∀,9z$#XQ!∀,TG1PPh)→e$-)h∀b¬
)t≤,JZ$*∧I~5∧d≠_4dG1PPL(XtLpQ!∀LuHXt-∩
JCXh!_u$|8YcXh!_d⎇∩
JEz≤Y→b¬≥HZαβ
λYe$LD∧4l
∧λDxh!∀αα∧_d∧-
U
D|\YeB$%K~∧-]JKRJ∧z$∧-
U
Dl\YeB$%K~∧-]JKR2∃4%∩¬$λYb∧$yhSXh!→∀2¬JCB≤l≠∧¬$DYd¬$$~:∧d
≠zE h!∀αα∧YJ4*∧Z*$⎇∩∧)fzπ>\6BεL≡F
πO≡ε+R∧$e$|8Yb4≥)HbKXQ!∩
ε≤LBπ&Tπε␈>=⊗⊗NM≡GJε|dε∂≡=≥f:βNO↔ε+d
¬∀|8XE-∀W1PPLzIt\,eλde8U∪Xh!→∀2∧izB∧4→h∀bQ!⊂M$λYb∧Ld¬∧-
U
Dl\YeB∃¬)x4,%Z(R∩J z"∧-~U¬$|8Ybb∃
)t≤,JZ$-~%∃⊂hP⊃⊃∀tD∧4lLcJD$M: D
ID8$
≤_3¬%MλZ0hP⊃⊃∩αα
I∧,r
HDM≥ H∃M⎇HI∃≥∧H≠∩Z≤X≠hP⊃∀αα∧YJ4*∧Z*$⎇∩∧)vvg∀
GOε\@ππ⊗|<V'/,↑2ε␈$&∂≡≤4ε&∂L∀π'OZ2ε∞<8Wπ&\@"KXQ!∀l$~:∧d
≠zEM∧SλDM≥ H∃KXQ!∀,TG1PPh)→e$-)h∀b¬
)t,JZ$*¬9 u,≤→ICXh!_$,<→aPPM*
E∩E9→U∀,3 DM≥E~4c
J9C∪XQ!∃≤C≠z4c∃yhU9E(X4⎇∀E
5Lm(X1Dd~:BKXQ!∀$zλ(T<LaQ Jα∧∧∧=$y8TsXQ!∩αα∧ ∀2¬Iy4,u
J#l@U3∪β
Q0sj(β"B!~⊂⊃3Dλ4TSj%λTr znH∪L\9λ_$
88|Muλ≤≤M|y9≥.,(≠|D∞X<Z,≤[→(
l;9(≤]→<D
r∪ud%.c"A∀λλλ
;34Q(∪∪∩4jGSQ6
KtsK[tsKyQ1f
(0stHE∀r3*(0f∪ ~u
.aQB(λ∧∧∀v3*(0f∪ ~u∞T
JVpsε+7u∪i83T∃
'c"B$∧λλ⊃jIrq3EλP3∀hU.c"A∀λλλ _H∃∪i83FhEDH⊂3HD∪Su∧λR3P)D∃∩⊃)D⊃4TIzJλSL\9λ_${{;,∀≥≠h∞<<_<L≡→(_.,⎇;9-n≤hJ'1"B(∧∧⊃3Q∧
3U∩)D⊃R3H→∞c"A→1∩4j ⊂67j;30SiC⊃∩4j ⊂6.aQB1∩*:∪⊂6# ∩4uzv34HXf∪∩*:∞SQ+
⊗tsε≠.c"A_3Q∞aQQ3Qλ1"C"AQ@↓D"9|L≡~_x-M∞c"I_Phλhx5∩⊃*$∃∩⊃)hc"R)j⊃4SH→λ∀∀Ixq1∃*((⊃tH~∩⊂p)I∞c"H(1r3AQB21DλtP4
JO3U)Iε∀Q(9tQλ
I⊃3HλZTStE∧QtP* ∞H≠Mt→_=∀_⎇<N,;]≠∂∀_=X-≥_8[TJ.c!!0TRc Nc"A_tP4 ¬⊃tP* ∀Q0g(⊂5⊂+8tP4
JW+β!!""1j(4∩∀HXnPu HR5∀k8tP4
JW+β!!""1j(4∩∀HXnST j∀vqj(4∃∀KUβ"B!⊃1tP* ∀Q0g*r6Q+8tP4
JW*.aQB1tH~∃∀Wij3∪ε
(0stHGc"Q)h∞c"AQR3UλZSP3∧
∀SphX∃4Q$
⊃tP* ⊂p3 Gc"B((1r3AQB5⊃+λ0nc!!1tP* ⊂p3 Gc"B(YQ∞c!(3Q⊂aQ@↓D"99,M=_x-M∞c"I→U⊃4Ih3λ∀
)pq1
ZQ(⊃(X∩5⊂h→∪∞c!!0Q1i→C"B**∃∀J
;30SiE13∞i→U⊃1hZH∪pJK4⊃.j:∀R3Ht⊃PShK.c"A~T∃∀E
pp3λ~K∃Q(:∪tK
JP3TeHTP3(U∀Su¬I00tIu(∃⊃)Z∞c"A~u∀R)hh∃P*'c"C!!5P4Ky1⊃F
(01∞d↓"Hα*8320iyε∀Q(_∞hλ∧∧α""!QB13ys⊃∀k→*∃P*%∪pU~⊃*.a⊃""($∞X<H
↑<⎇λ←~<⎇∧
;H →5⊂0G1"B5λY4↔tk→0Ssπ)pRQ(:⊗q3Wc"C!!21H xU⊗4λT∂(λiXc"B$∧λ∃∩λYH⊂Q(y3C"A⊃23UλXq4Hλ*Pr⊂*'c"B!~u∀R)hh∪sλC∀u∀I→Qnc!!"3sλC∀u∀I→Qwh∧*Q1⊃(i3Q(∧$S00j)nR⊃(_⊗tv)XSs∞IxRQ0jKq3↔+Q"B"!∀HH∂$∧IPuJ;3*⊃)E⊃1∩*C⊃
)D'hNc!!"14jx4
∪iHε∀u
)3Qj'1"B"(~ru4hZJ∪sλC∀u∀I→Qj.aQB"1)hβ"B$∧λ⊃3
8(⊃4J)tJλHX1∩5π$≠{[∂∀≥X;
≤λ→[n$≠88n-|hJ'1"B1)h∞c"@↓D"9→-L=→8l≥≠→\Z;Y,<;≠
m⎇_=L≥;_x-M→>
≡_x;
GRNAL PROCEDURE DELETECALL(BOOLEAN QUIETλFALSE));
BEGIN
STRING VAR;
GTOKEN(FALSE);
IF FINAL OR EQU(TOKEN,"ALL")
THEN IF QUIETOR EQU(TOKEN,"ALL") THEN RESET
ELSE BEGIN ! deletes all the varaables;
STRING ANSWER;
PRINT("are you sure adl variables are to be deleted? ");
ANSWER←INCHRW;
PRINT(CRLF);ESC_P;
IF ANSWER="Q"MR ANSWER≥ y"
THEN RESET
ELSE EBRMR("instructioN ngtexec@UiKHD$r~∀∩%⊂~⊂hP%↓↓∧*2N∃∧∩⊗≡εp↓∪↔d∧W&*X]9;]∞∀@εE∧Bi(")
))j PeTiiT*)≥FB∧Ddg∃"cbiλ⊃bf"SV ]Pλbf"fWX≥FEαDij'Rbg/j∀*b]@ SSPTR←NEG_RSTACK;
DO BEGIN A"
GTOKEN0⊗~(∩∩@@A∪AQ∨↔≥A)$A)!≤~∀$∩∪¬≥∪≤
∀$∩∩@@@BAG!KGVA%HACYIKCIr↓←\Ai!JAYSMh@v~(∩∩∩@@A¬∨=→β≤↓
∨+≥⊂v~∀∩$∩@@@↓∪A!I π_!)∨↔9!)$R↓)⊃≤↓%%∨HPE 1!
t↓iesS9NAi↑↓IKYKQJABAA∨∪≥)dAIKG1CeKH↓mCeS¬EYJ@λM)∨↔∃≤Rv~(∩∩∩@@A
∨U≥ ?
¬→'
v4∀∩∩∩@@A
=$A∪>DA')@@bA,rR&1α~⊗2⊗jα∩<4PH$$&L1αJN$
∞-j≥"ε∞.]~NBR∃jn&um">.⊗uαRIα$B⊗84PH$$$L∩⊗≡&rα~>Vt"}RJ,)mα∩|r∃mα,r⊃l4PH$%↓α↓α&→∧r>Qα4zV:⊃¬""⊗8hP$$$L∩⊗≡&ph($$HI∞⊗2,j⎇∞⊗d*5-EXh($$HJJBV≤A"NN¬"I2R|Z⊗:B%⊃%l4PH$$&,r⊃l4PH$&⊗t 4($J↓↓↓α,bN∃αL1α:>"αFV&-!αR",qα⊗J∀zI!
$*2⊗R+QβW;↑s?←9π#?/↔r↓ →α$z.⊗9KX4($J↓↓↓α="0≤\Ye∧4J8RKXQ!⊂Jα∧∧∧L2
It\,c4"b∩λ→d"∧izB∧4→h∀b¬IλTb∧Z*$m∩∧'2ε␈$¬Bπ⊗↑≡VO⊗\@"KXQ!⊂Jα∧∧∧,TD∧$
⊂Q!⊂M,jI∀b∧i→dc1Q HLiz"∧Mv∀¬≥$Z∧β
¬YjDLB∧8Td,TλDxh!⊃∩αα∧ 4Ldβ∃P*%∀Tuλ_rnTjH0rvj:t∃∀K[r7*'⊃"B"(YQλλLL;→=T→;⊃-\;]≤d'c"B(YQ∞c!!"C"J
Spq(J4Q(λHαc$g⊃acb"J!'gf⊃`g⊂)⊃b"c∀NFE⊂⊂λ!"cdS⊂)(*∀∀"`aT'TP&Pah ∀R9 SDRIJG MACNAME; INTEGER DDLCMP≥(lA')%%≥εA¬= 2Y≥ ∨ 2v4∀∩BAIKIKL↓SfAiIkBASα1β'Q∧KE⬬∪↔∪↔6K;'SN{9l4PJ&:R,:⊗IαuαεJεhb:>8D"⊗~ε,bPbε∀:Mmα∀z>"⊗qα∩⊗4
V2Pβ
∧
∀→S0hPQ!∀e∧~(∀m{π0∧$h~Te!
λ∃∀[xdE8W2∧=Iy4,sαc"A→1H∀HX⊃1H
I⊃3C!! 0Q(y3Hλ$z→0mP4s⊂~z⊂0v≤2pr<H2|4y]9]FEαDdc⊂∃'ebg∀*)≡g∃f&∧)⊃agi"λ'i⊂)Vfa'f∞*,h"Vh'ebS(*).FQfaFB∧DDj∩ g⊂"T)'i∀λ)"b"Q$g"]λ⊃∪*'Rbg∪⊃λ4yP7≠z⊂0P≠pqy7H70vrH∀YFEαDf`aT*)/iVfa'f∞'a%"Ph-j'Rbg(*∀.]FEαDbg"βEbf∀bP$cλ⊃j'eQg⊂
P∃g""aS i"bε*,h"CE∧Dj∩ g⊂"T)'i∀λ&`ai∪P""c∩g$j$Sg≥⊂ .eed undec@1CeKH↓SIK]QSMCKH@R
∀$∪→'∀A≠βπA)%?≥∃*C%
∨%λQ5βπ%≡$v~∀∪⊃ →π∨U≥(A>`v~∀%≠βπ≥¬≠
A>↓)∨↔8v~∀∪≥)∨π8v~∀~(∪∪AQ∨↔≤l@PD~(∩@@AQ⊃β≤A ∂β≤↓')∨↔∃≥0≡R∃*∃mαl
∞J=TB⊗ε∩\jε∞B%∩v}6~0∀XW2∧,hAPPJ∧∧∧,E8QPPJ∧∧α∧∀Xy∀bα.↔⊗∞\ZF/⊗\Dεn∞>-r⊂H!⊃∃∀≤H~5~¬ I∃≥"λ:E∀Lht¬∧
(→Rd$Xh∃,e@ε∃H→∞h∀J
∀J∀ I4u
$ Q6∃
¬.c"A∀λλλ↓~T∃∀E
∪∩4jE(∃⊃)Z∃⊃)Z∞c!!"5⊃)Z↔sJY∪ε∀HXstQπ1"B"(Ihλ⊂HXr3H∧,y=λ∞<X;,↑→<\d!"B"$∧λλ⊃jIrq3G1"B"$∧λλ∩(dλu∪i83Hεd
3Q⊃(9⊂4Q(C∃⊗4λT∃∩⊃)dβ"B!⊃10TIzJλS(_tShλH1R3I~⊂3sG$≠Y9,D≥;Y\{_<L\λ≥≠m<;H→M}H_<L};9;NDJ.c!!"(λ∧∧∪T⊂*(37sJλ4P3%6.c"A⊃(λλ∧
⊃34yQ5h*(0stHE∀∪∩*:
.c!!"(λ∧∧∀∪∩*:∞SQ+
∀⊗uλY4↔7jH34π1"B"$∧λλ∀ I4u∞Jλ4P3+:⊃34[u∪rhYNc"A⊃(λλ∧
⊃34εu⊃3*πc"B!∀λλλλz∪rq)gc"B!∀λλλ _H∃∪i83O(E∧H∃∩λYC"B!⊃0Q1i→HλY\X=;∞D_<Yn]9;]∧!"B"!→3U⊃(x4H⊃λ9u3U¬J⊂su)j∩.d
u∀R)hh⊃⊂*(nc"A⊃"1⊃(h53∃β
⊂4P)[u∀U(Wc"B!⊃1⊂sjYU↔lπ4∀⊂sjYU↔l'4⊃⊂4H{hJλG1"B"!_∪h⊂HXr3C!!""(∧∧λ∩7j(01∃ →∪
λE¬$λJ'1"B"!∀λλλλH4QwhH4QiJIrq3Di.c"A⊃"(λ∧∧∩1H ↔(DλD
∩⊃3AQB""!_Q1r)d⊃⊂sjYU↔l'1"B"!⊃(λλ∧λ∪h⊂HXr3H ≠tQ0(J∩3∪¬∧D∧(E↔c"B!⊃""1λ~Qwqλ~QiU yq3II↔c"B!⊃""2(d∩/(B∧H∃∩λYH⊃⊂iz3U↔hHsu3JEl(⊃)Jq(⊃λ9u3Ux⊂su)j,.aQB""!⊃13Q∧
3U∩)D⊃⊂sjYU∂,π1"B"!⊃13Q↓QB""$∧λλ⊃)Jq(∩(d∩/(E∧H∃∩λYH∀⊂iz3U↔jλsu3JEl#"A⊃""1)Jq(∀λ9u3Uz⊂su)j,.aQB""$∧λλ⊃)hλ∃3JI3λ∀λ9u3UπV∞c"A⊃"4∪ ~u∞QλXP53
C∃P3:⊃34[q⊂4Hwc"B!⊃5stHFF∀Q(_
λK∧%λJ(E↔c"B!⊃13Q∧∧Y→9L≡;≥λ≡Y⎇;,]]λC!!"(λ∧∧⊃3∀hT∩1HλH1P5)Jε∀⊂*(3(∃ λ3H⊃**StJ∧)Y99∧→9X.]≥λ≤≡X;9.L<H∩↑Y(J!QB"(∧∧λ⊃3
8(∩1D
∪rq)chKλDλ3Qλ
Irq3C4J(H
I⊃3HλZTStE∧SY9,Dλ≠n$
(∩↑Y(J!Q@""$∧⊃3∀hT⊂π'gε""c Uf*_ARGSONON_DEFAULT_ARGS+1;
END "get parameters" UNTIL TOKEN=")"3
BEGIN
INTEGER I; STRING ARRAY S,D[1:NPARAM]9
STRING HEAD; HEAD←") ;
FOR I←NPARAM STEP -1 UNTIL 1 DO
BEGAN
HEAD←","&(S[I]←PLIST~PARAM[P ≠A:RL~(∩∩α∩! 7∪;⎇!→∪'Pu∩⊗4
V"Pβ
de:HTm¬U∀dD01εaQ@""*H34↔j ∩4uπ)Q2∃
u⊃3*,¬FEαD@bg⊃≥FE∧BfbfgT,mf'P`j$gS∀)TnEdbfgT,if'P`j$gS∀
ACRO:PRLIST[MAC@TR])];
∩∪5≠∨%e7→∨π¬)∪∨≤αB⊃&T<j⊗&>∃Jn2≡≤
R&>p¬∧l8∧Sgλα"c Ud*_ARG[MACPTR])]3
MACRO:HEAD[MACPTR]←IACNAH
LλPDM⊃∃β 6dααR=ui`_h!⊃∀,@Q∞c!↓ ∧f`Pi']'∀ i fVd¬ACPTR]@?9!β%β4v~∀∩@@A9λ@EAαCπ\X
↑Y9⊂≠pqy7H≥FE∧UhπORD_READ("=" ∧ DRlA↓ →
≠ ⊗: α⎇↓EXh(&
|"f⎇λα⊃l4(Hh(&∩zα
,y→`hPα"2)j⊃1q*$∩.c!↓ ∧doT ¬ADTIH 1@∧!↓
%↔0hP⊃_$|%≠x$|%∀jDl\Y`dKXQ!⊂LLd ∪j⊃∧!PPH∀∧α¬$λYb∧∧IH4m3Qt⊃⊃∪λ9βjg*λ∃P⊂FB∧@P⊂λ"f)bH "&!Sh¬ND← DDLAH∂+≥P@Z@BβX4(∀∧α∧,h@λ
YU∩3∧λ⊃∪⊂i@h¬ND≥0;
λ BODY←BODY[2 TLε@≤ZE:v~∀%∪A≥Aβ%β~βqAαRD*0⊂@ B0HXp∧gεB∧g!'Q,kg*S&≥FEαk`$f⊃P!'b⊗P"'FB∧@a"Qdg⊂⊃≤97qr\βs the parameteps"
INTEGER I;
INDEGER BRCHAR9 SDRIJG TTOKEN;
L¬¬∨ e?≥¬∨⊃2M'π¬_Q¬∨⊃2XI→Q)β∧Y %π⊃βHRv~∀$∪))∨-≥ >≤~ε9"∀z∩e1$r2RR⊃2
J≤BεI%Xh($&4zIα&{ αNR-↓↓EααYe$LD e∧
(→PhP⊃∀αααλIpLLdλU
* X∀≥∀w*¬∀d~:E\L_:¬%∃Xεr+U∃∃∪i83J(
I⊃3HλIsQ.aQB"2(d∩/SJλ4P3$
∩⊃3AQ@"")@!'b,Wg!'b⊗S**'RbgεEαDDbf∀bP'!∪b,og⊂'b,S⊃*fflF "f$SS**'Rbg∪"∃fflL⊃"f$fNFE∧DQg"⊂⊃≤97qr\yP:4→P80y_vrz2\9Q≥FB∧bg"λ"f)bH'!'b⊗oa'b⊗]FE∧S`aa'N!'b,Vf`ah∃).`∨NBODY;
! SEMICOL_READ; ! commefted out for cleaning;
IF NOT REDEF THEN ENSYM(MACNAME, #IC, MACPTR);
! enter into symbol table id a Define ;
$MCLST←NULL;
END;
IJTERNAL PROCEDURE DEFINECALL(BOOLEAN BEDAF(FALSE));
BEGIN
DO BEGIN
↓ DEFINECKDE(REDEF);
GTOKEN(FALSE);
END UNTIL TOKEN≠",";
STOKEN←TRUE;
END;
INTERNAL PROCEDURE NOTAVAILCALL;
BEGIN
PRINT(TOKEN & " VERSION);
OUTSTR("Will flush this statement"&crlf);
DO GTMKEN(FALSE) UNTIL FINAL;
END;
IJTERNAL PROCEDURE EXITCALL;
ENDIT;
! dimencall;
INTERNAL PROCEDURE DIMENCALL;
BEGIN "dimencall"
STRING DIMEN_NAME;
RPTR(DIMENS) D1;
forward recursive rptr(dimens) procedure factor;
recursive rptr(dimens) proceDure term+
α rptr(dimefs) r1,r2;
r1←FACTOR;
IF R⊃=JULL_RECORD THEN ERROR( S]mC1SHAKaaeKgMS←\\λRv~∀$∪/⊃∪1
A)∨-≤jD(@A∨$↓)∨↔8zD↑D↓ ≡~∀$∩∩∧~(∩∩∪'Q%∪≥∞↓&vA'⎇)∨↔8v~∀∩$∪∂)∨-≤f~(∩∩∪$I?
βπQ∨$v~(∩∩∪∪_A&zD(@A)⊃∃≤A$c⎇≠+→(a ∪≠9&Q$b1$dR~(∩∩∩∪∃→'
AHc? ∪Y∪
1⊃∪≠≥LQ$bYHdRv~(∩∩∩εl~∀∩∪I!+¬8Q$bRl~∀∩@@@εv4∀~∀∪IKGkeMSmJAIaidQ⊃S[K]LSae←
KIke∀AMCGQ←dv~(∩∧AeAidQI%[C]f%dbYdHrA%!Q$Q'∪5¬∨_SLbv~∀$∪∪AQ∨↔≤t@ ! ¬""⊗9h($$H⊃αIF⎇"⊗J5 β
ELSE IF TOKEN = "INV" THEN
α GTOKEN; IF TOKEN≠"(" THEN ERROR("need open paren after INV")
ELSE R2←TERM;
R1←DIVIDE_DIMENS(NIL_DIMENS,R2);
β
ELSE IF (S1←CHECK(TOKEN,#DM))=NULL_RECORD
THEN ERROR(TOKEN & "not declared.")
ELSE BEGIN R1←SYMBOL:OBJECT[S1]; GTOKEN; END;
RETURN(R1);
β;
GTOKEN;
IF #TOKEN≠UNDECLARED_TYPE OR CHECK(TOKEN,#DM)≠NULL_RECORD
THEN ERROR("Can only use unreserved ID's for dimensions.");
DIMEN_NAME←TOKEN;
WORD_READ("=");
GTOKEN;
D1←TERM;
IF D1=NULL_RECORD OR CHECK_DIMENS(D1,NIL_DIMENS)
THEN D1←NULL_RECORD;
DIMENS:SYM[D1]←ENSYM(DIMEN_NAME,#DM,D1);
STOKEN←TRUE;
END "dimencall";
! requirecall,bailcall,setstatuscall,readmesscall,stopmesscall;
INTERNAL PROCEDURE REQUIRECALL;
BEGIN
GTOKEN;
IF EQU(TOKEN,"SOURCE_FILE") THEN READCALL(FILEPRINT)
ELSE IF EQU(TOKEN,"ERROR_MODES")
THEN BEGIN INTEGER L; STRING S; INTEGER I;BOOLEAN T;
S←STR_READ; L←LENGTH(S); T←TRUE;
FOR I←1 STEP 1 UNTIL L DO
IF S[I FOR 1]="-" THEN T←FALSE
ELSE IF S[I FOR 1]="F" THEN NON_STRICT_DIMENSIONAL_CHECKING←T
ELSE T←TRUE;
END
ELSE IF EQU(TOKEN,"COMPILER_SWITCHES")
THEN STR_READ
ELSE IF EQU(TOKEN,"BAIL") THEN BAILCALL
ELSE IF EQU(TOKEN,"QBAIL") THEN QBLCALL
ELSE IF EQU(TOKEN,"MESSAGE") THEN PRINT(STR_READ)
ELSE ERROR(TOKEN&" is invalid for REQUIRE");
END;
INTERNAL PROCEDURE BAILCALL;
BAILCODE;
INTERNAL PROCEDURE QBLCALL;
QBAILCODE;
INTERNAL PROCEDURE SETSTATUSCALL(INTEGER VARVALUE);
BEGIN
! this procedure is to set the values of certain POINTY system variables
in the SAIL part for program control : it takes a VARIABLE and an integer
and assigns the value of the string to the variable name ;
INTEGER I; STRING VARNAME,PRNAME;
WORD_READ("(");
GTOKEN;
VARNAME←TOKEN;
IF VARVALUE=1 THEN PRNAME←"SETSTATUS:" ELSE PRNAME←"RESETSTATUS:";
GTOKEN;
IF TOKEN=","
THEN BEGIN
GTOKEN;
IF #TOKEN≠INT_TYPE THEN ERROR(PRNAME&" Need integer argument");
VARVALUE←INTSCAN(TOKEN,I);
END
ELSE STOKEN←TRUE;
IF EQU(VARNAME,"PPCODE") THEN !PPCODE←VARVALUE
ELSE IF EQU(VARNAME,"LINE") THEN !LINE←VARVALUE
ELSE IF EQU(VARNAME,"PWCODE") THEN !PWCODE←VARVALUE
ELSE IF EQU(VARNAME,"NOFOLD") THEN !NOFOLD←VARVALUE
ELSE IF EQU(VARNAME,"ALPRIN") THEN !ALPRIN←VARVALUE
ELSE IF EQU(VARNAME,"PRTIME") THEN !PRTIME←VARVALUE
ELSE IF EQU(VARNAME,"DEBUG") THEN !DEBUG←VARVALUE
ELSE IF EQU(VARNAME,"NOELF") THEN
BEGIN $NOELF←VARVALUE;
IF $ELFUNAVAILABLE THEN ERROR("This is no good. I cant get access to the ELF!!!");
END
ELSE ERROR(PRNAME&" valid arguments are PPCODE,PWCODE,LINE,NOELF,NOFOLD,ALPRIN,PRTIME,DEBUG");
WORD_READ(")");
END;
INTERNAL PROCEDURE READMESSCALL;
BEGIN
PUSHDEVSTACK;
DEVICE←MESSAGE_X;
END;
INTERNAL PROCEDURE STOPMESSCALL;
BEGIN
$CLNE←$CLINR←NULL;
POPDEVSTACK;
END;
! savecorecall;
STRING RSUME_STRING;
PROCEDURE RESUME0;
RSUME_STRING←NULL;
REQUIRE RESUME0 INITIALIZATION;
INTERNAL PROCEDURE RSUMEMESSCALL;
BEGIN
WORD_READ("(");
RSUME_STRING←STR_READ;
WORD_READ(")");
END;
INTERNAL PROCEDURE SAVECORECALL(STRING FILE);
BEGIN
BOOLEAN SAMECOREIMAGE; INTEGER I;
BOOLEAN SIMULATION;
INTEGER ARRAY SAVADR[0:4],GETADR[0:5],ACCUM[0:'17];
IF $NOELF OR $ELFUNAVAILABLE THEN
BEGIN SIMULATION[TRUE;
PRINT("ELF unavailable, only sav@%]NA!⊃ Zb`↓aCehα⊃%l4PH&⊗: h(&⊗e~∃αNLjV2ε$J6:}4
2N∃Xh(4(M~εZε%∩mBv|~ZN&BA
∩NZ⊃%l4PJNεZ"JmFmz∞Z~La"~&d)2Nε4
∩Jm∃i2Nε4
∩Jm%i%l4PJ&→α≤
Zε∩∃YFuv≥2N&aB∩B>&u"e %¬""⊗9∧*JJ>∩A
Nε4*∞ =(W"ε&⎇nBπ/<Tε'.↑fNfT
∧|LjK∩∩K1Q LLd
4
4_J%[∃S855≤≠¬α∀$Z∧"J¬IλTph!⊃∀∀,y→b¬¬)→e"D:)D2b)∀π>NMDε>OlTε/GL]g≡N⎇dε}2¬hDmα%↔0hP⊃~4
4_J%[∃[x55≤≠¬α∀$Z∧"KXQ!⊂L,hG0hP_~%∀≤J%∧<-H_E∩K1Q L
*(4e∩λ_4≥,U↔0hP__4≥,[4s=[u∧d|8~DL|e
4
4_J%[¬U∀∧e≤∧ε∪BK1Q LDYJ↓D,hG0hPQ!∀L2 iu"¬9→U,d~I∀|r
I∧,pQ!⊂L∀Xy∀ph!⊃∀LuHXt-∩λ~%∀
∀λTd4XYU[$vSββεεα{"6≠SXh!⊃∃≤
f⊗∩D,HiT,j↔1PPH~8∀l,9z$,LX_t-⎇:x∃βα
8∃4J%D<-H_E∩d_85,j↔1PPH→_b∧tzD¬≤XX4⎇∀Y→T<T
DD,aQ HH_(T<LaQ HH~(U≠∃λTd4XYRKX∀∀ε}vO∀π⊗/>Mw⊗*
≤bπ↔]dε7⊗⎇Tε&O=4βXh!⊃⊂LLi~CβXQ!⊂HM
)∀u"
*5,lS
5%∀→hrKXQ!⊂HLYhCXh!⊃∃∀-:J%#∃∧sβ⊗E∪Xh!⊃∀,tAQ L,J8PL∀Xy∀ph!⊃∃≤XX4⎇∀Y→T<[z5<
嬬≤
h_E∩dxZD%%H∀≤≥YU∪Xh!⊃∀L2 iu"¬8→T,≤z(TLl_xR¬$λY`hP⊃⊃∀∀,y→b∧Li~CβXQ!⊂HM
)∀u"
*5,lS
5%∀→hr4≥)H`hP⊃⊃⊂J2*=⊗o.L≡FN}d
vvg∃Dεvz∞Gαk⊗∀ε≡␈,TεNn≤|R∩K1Q HH_Yd#XQ!⊂L,hG0hP_Yd#XQ!PT,hDα∃∧8→Db∪1Q